#define __FORCE_ASCII__

#ifndef __CONSTANTS_H__
#define __CONSTANTS_H__

#include <iostream>
#include <map>

std::map<unsigned short, char> value_to_character_map;
std::map<char, unsigned short> character_to_value_map;

void populate_value_to_character_map()
{
	value_to_character_map[0] = ' ';
	for(unsigned short s = 1; s <= 9; s++)
	{
		value_to_character_map[s] = s - 1 + 'A';
	}

	#ifndef __FORCE_ASCII__
	value_to_character_map[10] = 'Δ';
	#else
	value_to_character_map[10] = 'd';
	#endif

	for(unsigned short s = 11; s <= 19; s++)
	{
		value_to_character_map[s] = s - 11 + 'J';
	}

	#ifndef __FORCE_ASCII__
	value_to_character_map[20] = 'Σ';
	value_to_character_map[21] = 'Π';
	#else
	value_to_character_map[20] = 's';
	value_to_character_map[21] = 'p';
	#endif

	for(unsigned short s = 22; s <= 29; s++)
	{
		value_to_character_map[s] = s - 22 + 'S';
	}

	for(unsigned short s = 30; s <= 39; s++)
	{
		value_to_character_map[s] = s - 30 + '0';
	}

	value_to_character_map[40] = '.';
	value_to_character_map[41] = ',';
	value_to_character_map[42] = '(';
	value_to_character_map[43] = ')';
	value_to_character_map[44] = '+';
	value_to_character_map[45] = '-';
	value_to_character_map[46] = '*';
	value_to_character_map[47] = '/';
	value_to_character_map[48] = '=';
	value_to_character_map[49] = '$';
	value_to_character_map[50] = '<';
	value_to_character_map[51] = '>';
	value_to_character_map[52] = '@';
	value_to_character_map[53] = ';';
	value_to_character_map[54] = ':';
	value_to_character_map[55] = '\'';
}


void populate_character_to_value_map()
{
	for(std::map<unsigned short, char>::iterator iter = value_to_character_map.begin(); iter != value_to_character_map.end(); iter++)
	{
		character_to_value_map[iter->second] = iter->first;
	}
}


void populate_pseudo_constants()
{
	populate_value_to_character_map();
	populate_character_to_value_map();
}
#endif
